using System;

namespace libcharakter
{
	namespace Talente
	{
		namespace Natur
		{
			[Serializable]
			public class Sprache : abTalent
			{
				protected int m_komplexität;

				public Sprache (string name, int komplex, Charakter charakter)
					: base("Muttersprache: " + name, charakter.Eigenschaften["Klugheit"].Value - 2, TalentType.SpracheUndSchriften, 
					       TableColum.A , charakter)
				{
					m_komplexität = komplex;
				}
				public Sprache (string name, int komplex, TableColum colum, Charakter charakter)
					: base("Sprache Kennen: " + name, charakter.Eigenschaften["Klugheit"].Value - 4, TalentType.SpracheUndSchriften, 
					       colum, charakter)
				{
					m_komplexität = komplex;
				} 
				public override bool Probe (Eigenschaften eg, int wert1, int wert2, int wert3, int erschwert, ref int rest)
				{
					return Probe (eg["Klugheit"], eg["Intuition"], eg["Charisma"], wert1, wert2, wert3, erschwert, ref rest);
				}
			}
			[Serializable]
			public class GarethiFamilie : Sprache
			{
				protected GarethiFamilie (string name, int komplex, Charakter charakter)
					: base("Garethi Familie: "+name, 18, charakter)
				{
				}
				protected GarethiFamilie (string name, int komplex , Sprache other)
					: base("Garethi Familie: "+name, 18, other is GarethiFamilie ? TableColum.A : TableColum.B,
					       other.Charakter)
				{
				}
			}
			[Serializable]
			public class TulamidyaFamilie : Sprache
			{
				protected TulamidyaFamilie (string name,  int komplex, Charakter charakter)
					: base("Tulamidya Familie: "+name, komplex, charakter)
				{
				}
				protected TulamidyaFamilie (string name, int komplex, Sprache other)
					: base("Tulamidya Familie: "+name, komplex, other is GarethiFamilie ? TableColum.A : TableColum.B,
					       other.Charakter)
				{
				}
			}
			[Serializable]
			public class Orkisch : Sprache
			{
				protected Orkisch (string name, int komplex, Charakter charakter)
					: base("Orkisch: "+name, komplex, charakter)
				{
				}
				protected Orkisch (string name,  int komplex, Sprache other)
					: base("Orkisch: "+name, komplex, TableColum.B, other.Charakter)
				{
				}
			}
			[Serializable]
			public class Geheimsprachen : Sprache
			{
				protected Geheimsprachen (string name, int komplex, Charakter charakter)
					: base("Geheimsprachen: "+name, komplex, charakter)
				{
				}
				protected Geheimsprachen (string name, int komplex, Sprache other)
					: base("Geheimsprachen: "+name, komplex, TableColum.B, other.Charakter)
				{
				}
			}
			[Serializable]
			public class OhneFamilie : Sprache
			{
				protected OhneFamilie (string name,  int komplex, Charakter charakter)
					: base("Ohne Familie: "+name, komplex, charakter)
				{
				}
				protected OhneFamilie (string name,  int komplex, Sprache other)
					: base("Ohne Familie: "+name, komplex, TableColum.B, other.Charakter)
				{
				}
			}
			[Serializable]
			public class Garethi : GarethiFamilie
			{
				public Garethi (Charakter charakter)
					: base("Garethi", 18, charakter)
				{
				}
				public Garethi (Sprache mutterSprache)
					: base("Garethi", 18, mutterSprache)
				{
				}
			}
			[Serializable]
			public class Bosparano : GarethiFamilie
			{
				public Bosparano (Charakter charakter)
					: base("Bosparano", 21, charakter)
				{
				}
				public Bosparano (Sprache mutterSprache)
					: base("Bosparano", 21, mutterSprache)
				{
				}
			}
			[Serializable]
			public class Tulamidya : TulamidyaFamilie
			{
				public Tulamidya ( Charakter charakter)
					: base("Tulamidya", 18, charakter)
				{
				}
				public Tulamidya ( Sprache mutterSprache)
					: base("Tulamidya", 18, mutterSprache)
				{
				}
			}
			[Serializable]
			public class UrTulamidya : TulamidyaFamilie
			{
				public UrTulamidya ( Charakter charakter)
					: base("UrTulamidya", 21, charakter)
				{
				}
				public UrTulamidya ( Sprache mutterSprache)
					: base("UrTulamidya", 21, mutterSprache)
				{
				}
			}
			[Serializable]
			public class Nujuka : OhneFamilie
			{
				public Nujuka ( Charakter charakter)
					: base("Nujuka", 15, charakter)
				{
				}
				public Nujuka ( Sprache mutterSprache)
					: base("Nujuka", 15, mutterSprache)
				{
				}
			}
			[Serializable]
			public class Mohisch : OhneFamilie
			{
				public Mohisch ( Charakter charakter)
					: base("Mohisch", 15, charakter)
				{
				}
				public Mohisch ( Sprache mutterSprache)
					: base("Mohisch", 15, mutterSprache)
				{
				}
			}
			[Serializable]
			public class Thorwalsche : OhneFamilie
			{
				public Thorwalsche ( Charakter charakter)
					: base("Thorwalsche", 18, charakter)
				{
				}
				public Thorwalsche ( Sprache mutterSprache)
					: base("Thorwalsche", 18, mutterSprache)
				{
				}
			}
			[Serializable]
			public class Isdira : OhneFamilie
			{
				public Isdira ( Charakter charakter) 
					: base("Isdira", 27, charakter)
				{
				}
				public Isdira ( Sprache muttersprache)
					:base("Isdira", 27, muttersprache)
				{
				}
			}
			[Serializable]
			public class Rogolan : OhneFamilie
			{
				public Rogolan ( Charakter charakter) 
					: base("Rogolan", 24, charakter)
				{
				}
				public Rogolan ( Sprache muttersprache)
					:base("Rogolan", 24, muttersprache)
				{
				}
			}
			[Serializable]
			public class Goblinische : OhneFamilie
			{
				public Goblinische ( Charakter charakter) 
					: base("Goblinische", 12, charakter)
				{
				}
				public Goblinische ( Sprache muttersprache)
					:base("Goblinische", 12, muttersprache)
				{
				}
			}
			[Serializable]
			public class Rssahh : OhneFamilie
			{
				public Rssahh ( Charakter charakter) 
					: base("Rssahh", 18, charakter)
				{
				}
				public Rssahh ( Sprache muttersprache)
					:base("Rssahh", 18, muttersprache)
				{
				}
			}
			[Serializable]
			public class Zhayad : Geheimsprachen
			{
				public Zhayad ( Charakter charakter) 
					: base("Zhayad", 15, charakter)
				{
				}
				public Zhayad ( Sprache muttersprache)
					: base("Zhayad", 15, muttersprache)
				{
				}
			}
			[Serializable]
			public class Atak : Geheimsprachen
			{
				public Atak ( Charakter charakter) 
					: base("Atak", 12, charakter)
				{
				}
				public Atak ( Sprache muttersprache)
					: base("Atak", 12, muttersprache)
				{
				}
			}
			[Serializable]
			public class Füchsisch : Geheimsprachen
			{
				public Füchsisch ( Charakter charakter)
					: base("Füchsisch", 12, charakter)
				{
				}
				public Füchsisch ( Sprache muttersprache)
					: base("Füchsisch", 12, muttersprache)
				{
				}
			}
		}
	}
}

